Distill Pipeline
目录
- [Distill Pipeline](#Distill Pipeline)
✨️ 概述
本Pipeline提供以下核心优势:
-
多种蒸馏损失:支持用不同蒸馏损失训练模型,并可通过相应参数进行更精细的配置。
-
全面的性能监控:细粒度度量跟踪系统,监控性能指标,为模型 训练过程提供全面的可视化和分析能力。
-
高效分布式计算:利用 Ray 框架,在大型 GPU 集群上实现高效的分布式训练,显著提升训练速度和资源利用率。
-
高效训练优化:支持 Sequence Packing(将多条短样本拼接成连续序列,减少 padding)。配置方法和实现原理详见
sequence packing对应文档。
✨️ 核心组件
主模块(DistillPipeline)
DistillPipeline(位于 roll/pipeline/distill/distill_pipeline.py)是整个蒸馏训练的主流程。它管理完整的训练工作流,包括:
- 初始化并管理分布式工作进程(Student 和 Teacher 工作进程)。
- 协调数据收集与处理。
- 执行模型训练步骤。
- 处理检查点保存。
- 记录指标和实验跟踪。
源码:roll/pipeline/distill/distill_pipeline.py
配置文件(DistillConfig)
DistillConfig(定义于 roll/pipeline/distill/distill_config.py)是一个基于 Pydantic/dataclass 的配置对象,用于指定运行DistillPipeline的全部参数。该配置系统支持通过 YAML 文件配置,并使用 Hydra 框架进行管理。
配置文件结构与组织
配置文件(如 examples/qwen2.5-7B-distill_megatron/distill_megatron.yaml)按功能模块组织,主要包含以下部分:
-
实验基本设置
exp_name:实验名称,用于标识一次具体训练任务logging_dir:日志文件保存路径output_dir:模型检查点和输出文件保存路径
-
训练控制参数
save_steps:保存模型检查点的频率logging_steps:记录训练指标的频率resume_from_checkpoint:是否从检查点继续训练。若想继续训练,请设为其路径;否则设为False。
-
模型配置
student_pretrain:学生模型预训练权重路径teacher_pretrain:教师模型预训练权重路径
-
蒸馏算法参数
distill_loss_weight:分配给蒸馏项的总损失比例(SFT 损失权重为 1 − 该值)。kd_temperature:知识蒸馏期间对学生 logits 应用的 softmax 温度。teacher_temperature